/**
 *文件导出
 @params:tableList,params,URL,exportURL,NAME,fomatXl
 @return:
 */

let isExporting = false;
export function downExport(tableList, params, URL, exportURL, NAME, fomatXl) {
    // 保证 exportURL 只被调用一次
    if (isExporting) return;
    isExporting = true;

    let dataDt = '';
    if (params.dataDt === '' || params.dataDt === undefined) {
        dataDt = this.$store.state.user.nowDate;
    } else if (params.dataDt === '无日期') {
        dataDt = '';
    } else {
        dataDt = params.dataDt;
    }

    let format = fomatXl ? fomatXl : '.xlsx';

    if (tableList.length === 0) {
        this.$message.error('暂无数据');
        isExporting = false;  // 取消锁定
        return;  // 数据为空，直接返回
    }

    URL(params).then((res) => {
        if (res.data.code === '0') {
            if (res.data.list.length === 0) {
                this.$message.error('暂无数据');
                isExporting = false;  // 取消锁定
                return;  // 数据为空，直接返回
            }

            // 确保 exportURL 只被调用一次
            console.log('Calling exportURL with params:', params);
            exportURL(params).then((res) => {
                console.log('exportURL request response:', res);
                if (!(res && res.data)) {
                    isExporting = false;  // 取消锁定
                    return;
                }

                let blob = new Blob([res.data], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'});  // 修正 MIME 类型
                if (window.navigator.msSaveBlob) {
                    try {
                        window.navigator.msSaveBlob(blob, dataDt + NAME + format);
                    } catch (e) {
                        console.log(e);
                    }
                } else {
                    let link = document.createElement('a');
                    link.href = window.URL.createObjectURL(blob);
                    link.download = dataDt + NAME + format;
                    link.click();
                    window.URL.revokeObjectURL(link.href);
                }

                isExporting = false;  // 取消锁定

            }).catch(error => {
                console.error('Export URL error:', error);
                this.$message.error('导出失败');
                isExporting = false;  // 取消锁定
            });
        } else {
            this.$message.error(res.data.msg);
            isExporting = false;  // 取消锁定
        }
    }).catch(error => {
        console.error('URL error:', error);
        this.$message.error('请求失败');
        isExporting = false;  // 取消锁定
    });
}




